package com.common.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author Zixiang Hu
 * @description 通用的响应对象
 * @create 2021-01-21-10:43
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RPCResponse implements Serializable {
    // 一个响应对应一个请求，每个请求的请求id都是唯一的
    private String requestId;
    // 状态信息
    private int code;
    private String message;
    // 响应的数据的具体类型，方便在进行序列化后将其反序列化出来，主要是针对fastjson序列化
    private Class<?> dataType;
    // 具体数据
    private Object data;

    public static RPCResponse success(String requestId, Object data) {
        return RPCResponse.builder().code(200).
                requestId(requestId).
                message("OK").data(data).build();
    }

    public static RPCResponse success(Object data) {
        return RPCResponse.builder().code(200).
                message("OK").data(data).build();
    }

    public static RPCResponse fail() {
        return RPCResponse.builder().code(500).message("服务器发生错误").build();
    }
}
